import path from 'path';
import {
  BrowserWindow,
  // screen
} from 'electron';
import { asset, isDev as isDevelopment } from '../util';

// 创建教辅工具窗口函数 (单例模式: 一个类或者函数只允许创建一个实例)
let drawingWindow;
export function createDrawWindow(type = 'draw', drawCallBack, data = {}) {
  // 销毁
  if (type === 'destroy') {
    if (drawingWindow) {
      drawingWindow.destroy();
      drawingWindow = null;
      drawCallBack && drawCallBack();
    }
    return;
  }

  // 保证生成的窗口数据 永远唯一
  if (!drawingWindow) {
    // 获取主显示器的大小(使用这种无法背景透明！！！！必须)
    // const { width, height } = screen.getPrimaryDisplay().workAreaSize;
    // 创建绘制窗口
    drawingWindow = new BrowserWindow({
      // width,
      // height,
      width: 1280,
      height: 800,
      // width: dimensions.width-1,
      // height: screenHeightWithoutTaskbar,
      minWidth: 1280,
      minHeight: 800,
      resizable: false, // 禁用调整大小
      frame: false, // 设置为 false 隐藏标题栏包括放大缩小按钮y
      transparent: true, // 设置窗口为透明,在Windows上，仅在无边框窗口下起作用。
      alwaysOnTop: true, // 窗口总是显示在最上层
      skipTaskbar: true, // 不在任务栏中显示
      webPreferences: {
        experimentalFeatures: true, // 启用一些实验性中的功能
        contextIsolation: true,
        preload: path.resolve(asset('presidebar.js')),
      },
      // parent: mainWindow, // child 窗口将总是显示在 parent 窗口的上层.
    });

    // 最大化窗口
    drawingWindow.maximize();
    drawingWindow.setAlwaysOnTop(true, 'screen-saver'); // 设置窗口永远展示在最顶层
    drawingWindow.setVisibleOnAllWorkspaces(true);
    drawingWindow.setIgnoreMouseEvents(true, { forward: true });
    drawingWindow.focus();
    // console.log('data =======> ', data);
    if (isDevelopment || __dev) {
      // 开发环境下使用
      // drawingWindow.webContents.openDevTools();
      // drawingWindow.loadURL(`http://localhost:5173/pages/digitalTeachingMaterial/`);
      // 打98测试包使用
      drawingWindow.loadFile(path.resolve(asset('dist/pages/digitalTeachingMaterial/index.html')));
    } else {
      // 线上地址
      // drawingWindow.loadFile(path.resolve(asset('dist/pages/digitalTeachingMaterial/index.html')));
    }

    // 加载文件后发送参数到渲染进程
    drawingWindow.webContents.on('did-finish-load', () => {
      drawingWindow.webContents.send('load-params', data);
    });
  }

  return drawingWindow;
}
